/**
 * Created by 1 on 2018-1-31.
 */
//用来保存公共数据的公共区域
//localStorage 本地缓存

/**
 * localStorage的方法
 * 获取数据 var str = localStorage.getItem(key);
 * 添加和追加数据  localStorage.setItem(key,value)  value是一个字符串
 * 移除数据  localStorage.removeItem(key)
 * */

//定义常量key  将来操作的localStorage中的数据都以这个key来作为标识
export const KEY = 'goodsdata';
//商品的id和数量 对象
export var value = {goodsid:0,count:0};

//实现数据的增加
export function setItem(value) {
    //获取json格式
    var jsonString = localStorage.getItem(KEY);
    jsonString = jsonString || '[]';
    //JSON.parse() 解析JSON字符串
    var arr = JSON.parse(jsonString);
    //将value追加进入arr
    arr.push(value);
    //将arr转换成json字符串保存起来
    // JSON.stringify()方法，将JSON转换成为JSON字符串
    //localStorage只支持字符串的存储
    localStorage.setItem(KEY,JSON.stringify(arr));
}

//获取数据
export function getItem() {
    var jsonString = localStorage.getItem(KEY);
    jsonString = jsonString || '[]';
    //将json格式字符串转换成js对象输出
    return JSON.parse(jsonString);
}

//移除数据
export function removeItem() {
    var arr = getItem();
    //查找arr中goodsid和传入的参数goodsid一致的数据全部移除
    for (var i = arr.length-1; i >= 0; i--) {
        console.log(arr[i].goodsid);
        if(arr[i].goodsid == goodsid){
            arr.splice(i,1);
        }
    }
    //保存更新后的数据
    localStorage.setItem(KEY,JSON.stringify(arr));
}

/**
 * 创建一个方法获得所有本地存储的商品数据
 * 将localStorage中的数据全部整合成一个对象的形式
 * 格式：{id:数量,id:数量}
* **/

export function getGoodsObj() {
    //获取到的数组格式 [{goodsid:sdfdf,count:1},{goodsid:ttrsdf,count:2}]
    var arr = getItem();
    //将arr数组中的id相同的多个对象合并成同一个对象
    var resObj = {};
    for (var i = 0; i < arr.length; i++) {
        var item = arr[i];
        if(!resObj[item.goodsid]){
            //如果没有当前商品的数据，则添加一个数据
            resObj[item.goodsid] = item.count;
        }else{
            //如果的当前商品已经有了数据，则将count追加
            var count = resObj[item.goodsid];
            resObj[item.goodsid] = count + item.count;
        }
    }

    return resObj;
}

/**
 * 在购物车中加减商品时同步更新到本地缓存
 * 更新数据的方法
 * */
export function updateData(obj) {
    var arr = getItem();
    var count =1;
    if(obj.type == 'add'){
        //加 每点击加，就加上一条count=1的数据
        arr.push({goodsid:obj.goodsid,count:count});
    }else{
        //减
        for (var i = 0; i < arr.length; i++) {
            if(arr[i].goodsid == obj.goodsid){
                //如果数量大于1，在原来的基础上减1后保存回去
                if(arr[i].count > 1){
                    arr[i].count = arr[i].count -1;
                    break;
                }else{
                    //否则删除这个对象
                    arr.splice(i,1);
                    break;
                }
            }

        }
    }

    //在本地存储中保存更新后的数据
    localStorage.setItem(KEY,JSON.stringify(arr));
}